package com.ysq.www.api.work.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.ysq.www.api.work.entity.GeneralTask;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ysq.www.common.result.ResultMsg;

/**
 * <p>
 * 通用任务表 服务类
 * </p>
 *
 * @author dql
 * @since 2020-08-11
 */
public interface IGeneralTaskService extends IService<GeneralTask> {

    /**
     * 提交通用任务
     * @param gk 通用任务对象
     * @return
     */
    ResultMsg addGeneralTask(GeneralTask gk);

    /**
     * 查询我发起的通用任务
     * @param userId 用户id
     * @param pageNumber 页码
     * @param pageSize 页大小
     * @param time 日期
     * @return
     */
    IPage<GeneralTask> selectSponsorById(Integer userId, Integer pageNumber, Integer pageSize, String time);

    /**
     * 分页查询待处理/已处理通用任务
     * @param userId 审批人用户id
     * @param type 类型：0未处理，1已处理
     * @param pageNumber 页码
     * @param pageSize 页大小
     * @param time 日期
     * @return
     */
    IPage<GeneralTask> selectPendingByPage(Integer userId, Integer type, Integer pageNumber, Integer pageSize, String time);

    /**
     * 查询我发起的通用任务详情
     * @param gtId 通用任务id
     * @return
     */
    GeneralTask selectDetailById(Integer gtId);

    /**
     * 查询待处理/已处理/抄送通用任务详情
     * @param gtId 通用任务id
     * @return
     */
    GeneralTask selectDisposeById(Integer gtId);

    /**
     * 处理通用任务请求
     * @param gtId 通用任务id
     * @param result 处理结果：1通过，2驳回
     * @return
     */
    ResultMsg checkGeneralTaskById(Integer gtId, Integer result);

    /**
     * 撤销通用任务
     * @param gtId 通用任务id
     * @return
     */
    ResultMsg repealGeneralTaskById(Integer gtId);

    /**
     * 分页查询抄送至我的通用任务
     * @param userId 用户id
     * @param pageNumber 页码
     * @param pageSize 页大小
     * @param time 日期
     * @return IPage
     */
    IPage<GeneralTask> selectCopyToMeByPage(Integer userId, Integer pageNumber, Integer pageSize, String time);
}
